타이머(Timer) 처리를 위한 클래스이다. 실행주기와 타이머 이벤트가 발생할때 실행할 메서드를 정의한다.
샘플예제
주요 메소드
| 메서드 | 기능개요 |
|---|---|
| initialize | new 연산자를 사용하여 PeriodicalExecuter 클래스로 타이머 인스턴스를 생성할 때 실행되는 생성자 메서드이다. 초기값을 설정한다. |
| registerCallback | 초 단위의 실행주기와 실행주기마다 호출 될 onTimerEvent() 메서드를 설정한다. 즉 타이머를 설정한다. |
| onTimerEvent | 실행주기가 경과했을 때 자동으로 실행된다. |
| stop | 타이머를 종료한다. |
var PeriodicalExecuter = Class.create({
initialize: function(callback, frequency) {
this.callback = callback;
this.frequency = frequency;
this.currentlyExecuting = false;
this.registerCallback();
},
registerCallback: function() {
this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
},
execute: function() {
this.callback(this);
},
stop: function() {
if (!this.timer) return;
clearInterval(this.timer);
this.timer = null;
},
onTimerEvent: function() {
if (!this.currentlyExecuting) {
try {
this.currentlyExecuting = true;
this.execute();
} finally {
this.currentlyExecuting = false;
}
}
}
});
Class.create를 통하여 생성된 클래스로 일정 주기로 반복하여 메서드를 호출한다. 사용 방법은 반복하여 수행할 메서드와 실행 주기를 아규먼트로 넘겨 주면 된다.
구현되어 있는 메소드들은 모두 외부에서 사용할수 없다.
예제명 : periodicalExecuter.html
Event.observe(window, 'load', function() {
Event.observe('startClick', 'click', PeriodTimer.startClick);
Event.observe('stopClick', 'click', PeriodTimer.stopClick);
});
var PeriodTimer = {
endButton: '',
startClick: function(event) {
PeriodTimer.count = 0;
if (!PeriodTimer.endButton) {
PeriodTimer.countTimer = new PeriodicalExecuter(PeriodTimer.runPeriodTimer, 1);
}
PeriodTimer.endButton = true;
},
runPeriodTimer: function() {
PeriodTimer.count++;
$('show1').innerHTML = '경과 시간(초) --> ' + PeriodTimer.count;
},
stopClick: function(event) {
PeriodTimer.countTimer.stop();
PeriodTimer.endButton = '';
}
}
설명 할 내용 없음.